﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PSE.Framework.UI.Resources
{
    /// <summary>
    /// Interface para os providers de recursos
    /// </summary>
	public interface IResourceProvider
	{
        /// <summary>
        /// Captura um recurso a partir da chave e formata o retorno com os parâmetros
        /// </summary>
        /// <param name="key">Chave do recurso</param>
        /// <param name="parameters">Parâmetros de formatação</param>
        /// <returns>Recurso se encontrar ou Exception se não encontrar</returns>
        object GetResource(object key, params object[] parameters);

        /// <summary>
        /// Tenta capturar um recurso a partir da chave e formata o retorno com os parâmetros
        /// </summary>
        /// <param name="key">Chave do recurso</param>
        /// <param name="parameters">Parâmetros de formatação</param>
        /// <returns>Recurso se encontrar ou mensagem de erro se não encontrar</returns>
        object TryGetResource(object key, params object[] parameters);

        /// <summary>
        /// Verifica se um recurso existe a partir da chave
        /// </summary>
        /// <param name="key">Chave do recurso</param>
        /// <returns>true se recurso existir, false se não existir</returns>
        bool ResourceExists(object key);

        /// <summary>
        /// Evento disparado quando os recursos mudarem
        /// </summary>
		event EventHandler ResourceChanged;
	}
}
